package com.rbn.stockmobiledevices.entradas;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonProperty;

import com.rbn.stockmobiledevices.dispositivos.Dispositivo;
import com.rbn.stockmobiledevices.proveedores.Proveedor;


@Entity
@Table(name = "compras")
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE)
public class Entrada {

	@Id
	@Column(name = "imei")
	private long imei;
	
	@ManyToOne(optional=false)
	@JoinColumn(name="codigo", nullable=false, updatable=true)
	private Dispositivo dispositivo;
	
	@Column(name = "precio_compra")
	private double precioCompra;
	
	@Column(name = "fecha_alta")
	private Date fechaEntrada;
	
	@ManyToOne(optional=false)
	@JoinColumn(name="proveedor", nullable=false, updatable=true)
	private Proveedor proveedor;
	
	@Column(name = "observacion")
	private String observacion;
	
	@ManyToOne(optional=false)
	@JoinColumn(name="estado", nullable=false, updatable=true)
	private Estado estado;
	
	@Column(name = "pagado")
	private boolean pagado;
	
	public Entrada(){
		super();
	}
	
	public Entrada(long imei, Dispositivo dispositivo, double precioCompra, Date fechaEntrada, Proveedor proveedor, String observacion, Estado estado, boolean pagado) {
		super();
		
		this.imei = imei;
		this.dispositivo = dispositivo;
		this.precioCompra = precioCompra;
		this.fechaEntrada = fechaEntrada;
		this.proveedor = proveedor;
		this.observacion = observacion;
		this.estado = estado;
		this.pagado = pagado;
	}
	
	@JsonProperty
	public long getImei() {
		return imei;
	}
	public void setImei(long imei) {
		this.imei = imei;
	}
	
	@JsonProperty
	public Dispositivo getDispositivo() {
		return dispositivo;
	}
	public void setDispositivo(Dispositivo dispositivo) {
		this.dispositivo = dispositivo;
	}
	
	@JsonProperty
	public double getPrecioCompra() {
		return precioCompra;
	}
	public void setPrecioCompra(double precioCompra) {
		this.precioCompra = precioCompra;
	}
	
	@JsonProperty
	public Date getFechaEntrada() {
		return fechaEntrada;
	}
	public void setFechaEntrada(Date fechaEntrada) {
		this.fechaEntrada = fechaEntrada;
	}
	
	@JsonProperty
	public Proveedor getProveedor() {
		return proveedor;
	}
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	
	@JsonProperty
	public String getObservacion() {
		return observacion;
	}
	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	@JsonProperty
	public Estado getEstado() {
		return estado;
	}
	public void setEstado(Estado estado) {
		this.estado = estado;
	}

	@JsonProperty
	public boolean isPagado() {
		return pagado;
	}
	public void setPagado(boolean pagado) {
		this.pagado = pagado;
	}
}
